$final_url = $_SERVER['REQUEST_URI']; // redirect to url without .html if(mb_substr($final_url, -5, 5) == '.html') $final_url = mb_substr($final_url, 0, -5).'/'; // redirect to url without .htm if(mb_substr($final_url, -4, 4) == '.htm') $final_url = mb_substr($final_url, 0, -4).'/'; // url with / on the end $PATH = mb_strtolower(parse_url($final_url, PHP_URL_PATH)); if(substr($PATH, -1) != '/') $PATH .= '/'; // ? params $GET_PARAMS = parse_url($final_url, PHP_URL_QUERY); if($GET_PARAMS != '') $GET_PARAMS = "?{$GET_PARAMS}"; // redirect if url changed if($PATH.$GET_PARAMS != $_SERVER['REQUEST_URI']){ header('HTTP/1.1 301 Moved Permanently'); header("Location: {$PATH}{$GET_PARAMS}"); exit(); } // session if(isset($_COOKIE['remember'])) session_set_cookie_params(3600 * 24); // 1 day if(isset($_COOKIE['id_session'])) session_id($_COOKIE['id_session']); session_start(); include_once 'api.php'; include_once 'const.php'; include_once 'config.php'; include_once 'connect.php'; // langs $LANGS = $URLS = array(); $result = mysqli_query($db, "SELECT title, code FROM langs ORDER BY rating DESC"); while($row = mysqli_fetch_assoc($result)) array_push($LANGS, array('title' => htmlspecialchars($row['title'], ENT_QUOTES), 'code' => $row['code'])); // no langs if(count($LANGS) == 0) goto HTML; // parse url $path_sections = array_splice(explode('/', $PATH, 5), 1, -1); // remove last and first empty switch(count($path_sections)){ case 0: // no params $LANG = $LANGS[0]['code']; break; case 1: // lang|params if(mb_substr($path_sections[0], 0, 1) == $PARAM_SYMBOL){ // param $url_params = "{$path_sections[0]}/"; array_splice($path_sections, 0, 1); $LANG = $LANGS[0]['code']; } else{ // lang for($i = 0; $i < count($LANGS); $i++) if($LANGS[$i]['code'] === $path_sections[0]) $LANG = $LANGS[$i]['code']; // lang not exist if(!isset($LANG)){ $LANG = $LANGS[0]['code']; $URL = '404'; } } break; case 2: // lang/[url|params] // lang for($i = 0; $i < count($LANGS); $i++) if($LANGS[$i]['code'] === $path_sections[0]) $LANG = $LANGS[$i]['code']; // lang not exist if(!isset($LANG)){ $LANG = $LANGS[0]['code']; $URL = '404'; } else if(mb_substr($path_sections[1], 0, 1) == $PARAM_SYMBOL){ // param $url_params = "{$path_sections[1]}/"; array_splice($path_sections, 1, 1); } else $URL = htmlspecialchars($path_sections[1], ENT_QUOTES); break; case 3: // lang/url/params // lang for($i = 0; $i < count($LANGS); $i++) if($LANGS[$i]['code'] === $path_sections[0]) $LANG = $LANGS[$i]['code']; // lang not exist if(!isset($LANG)){ $LANG = $LANGS[0]['code']; $URL = '404'; } else if(mb_substr($path_sections[2], 0, 1) == $PARAM_SYMBOL){ // param $URL = htmlspecialchars($path_sections[1], ENT_QUOTES); $url_params = "{$path_sections[2]}/"; array_splice($path_sections, 2, 1); } else $URL = '404'; break; default: // wrong $LANG = $LANGS[0]['code']; $URL = '404'; break; } $PATH = count($path_sections) == 0 ? '/' : '/'.join('/', $path_sections).'/'; // default lang urls for($i = 0; $i < count($LANGS); $i++) $URLS[$LANGS[$i]['code']] = '/'.htmlspecialchars($LANGS[$i]['code'], ENT_QUOTES)."/{$url_params}{$GET_PARAMS}"; // parse url params parse_str(mb_substr($url_params, 1, -1), $GET); // allowed url params if(count(array_diff(array_keys($GET), $ALLOWED_URL_PARAMS)) != 0) $URL = '404'; // currency getCurrency(); // page visible $PAGE_VISIBLE = !isset($_SESSION['user_type']) || $_SESSION['user_type'] == 1; // page $result = $URL ? getPageByUrl($URL) : getMainPage(); if(mysqli_num_rows($result) != 0){ $row_page = mysqli_fetch_assoc($result); // closed pages if(!isset($_SESSION['user_type']) && ($row_page['url'] == 'profile' || $row_page['url'] == 'orders' || $row_page['url'] == 'forms')){ $showLogin = 1; goto PAGE404; } else{ $URL = htmlspecialchars($row_page['url'], ENT_QUOTES); $ID_PAGE = intval($row_page['id']); goto PAGE; } } else goto PAGE404; PAGE404: $URL = '404'; $URLS = array($LANG => $URL); $result = getPageByUrl($URL); if(mysqli_num_rows($result) != 0){ $row_page = mysqli_fetch_assoc($result); $ID_PAGE = intval($row_page['id']); } else goto HTML; PAGE: $SORTING = array("id DESC","rating DESC","CAST(price AS DECIMAL(10,2)) DESC","title DESC","date DESC","id","rating","CAST(price AS DECIMAL(10,2))","title","date"); // wrong sorting if(isset($GET['sort'])){ if((intval($GET['sort']) < 0 || intval($GET['sort']) > 9) && $URL != '404'){ unset($GET['sort']); $update_params = 1; } $row_page['sorting'] = intval($GET['sort']); } // wrong num page if(isset($GET['page']) && intval($GET['page']) < 2 && $URL != '404'){ unset($GET['page']); $update_params = 1; } // wrong items if(isset($GET['items']) && $URL != '404'){ $items = explode(',', $row_page['pagination']); if($row_page['pagination'] == '' || intval($GET['items']) == intval($items[0])){ unset($GET['items']); $update_params = 1; } } // update params if($update_params){ $url_params = urldecode(http_build_query($GET)); if($url_params != '') $url_params = "{$PARAM_SYMBOL}{$url_params}/"; } // redirect main page if(intval($row_page['main']) == 1) switch(count($path_sections)){ case 1: // from /lang/ to / if($LANG === $LANGS[0]['code']) $PATH = '/'; break; case 2: // from /lang/url/ to / OR to /lang/ $PATH = $LANG === $LANGS[0]['code'] ? '/' : "/$LANG/"; break; } // redirect if url changed if($PATH.$url_params.$GET_PARAMS != $_SERVER['REQUEST_URI']){ header('HTTP/1.1 301 Moved Permanently'); header("Location: {$PATH}{$url_params}{$GET_PARAMS}"); exit(); } // filter, param $FILTER = isset($GET['filter']) ? explode(',', str_replace(';', ',', $GET['filter'])) : array(); $PARAM = isset($GET['param']) ? explode(',', $GET['param']) : array(); // check wrong filters if(isset($GET['filter']) && $URL != '404'){ $row = mysqli_fetch_assoc(mysqli_query($db, "SELECT COUNT(DISTINCT params.id) AS num FROM params LEFT JOIN properties ON properties.id = params.id_property WHERE params.id IN (".mysqli_real_escape_string($db, str_replace(';', ',', $GET['filter'])).") AND properties.id_page = '$ID_PAGE' AND properties.filter = 1")); if(intval($row['num']) != count($FILTER)) goto PAGE404; } // check wrong params if(intval($GET['param']) != 0 && $URL != '404'){ $row = mysqli_fetch_assoc(mysqli_query($db, "SELECT COUNT(id_param) AS num FROM pages_params WHERE id_param IN (".mysqli_real_escape_string($db, $GET['param']).") AND id_page = '$ID_PAGE'")); if(intval($row['num']) != count($PARAM)) goto PAGE404; } // header 404 if($URL === '404') header('HTTP/1.0 404 Not Found'); // elements $ELEMENTS = array(); getElements("{$ID_PAGE}, 0, -1"); HTML: // if load page via ajax if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){ include_once "templates/{$row_page['template']}-ajax.php"; mysqli_close($db); // close db exit; } ?>
// Google Tag Manager if($GOOGLE_TAG_MANAGER != '') echo ""; // Google Analytics if($GOOGLE_ANALYTICS != '') echo ' '; // filter exists if(isset($GET['filter'])){ $row_page['text'] = ''; $row_page['meta_keywords'] = ''; $row_page['noindex'] = 1; $row_page['nofollow'] = 1; // from filters $result = mysqli_query($db, "SELECT bigrams FROM filters WHERE filter = '".mysqli_real_escape_string($db, $GET['filter'])."' LIMIT 1"); if(mysqli_num_rows($result) != 0){ $row = mysqli_fetch_assoc($result); $row_page['bigrams'] = $row['bigrams']; $row_page['noindex'] = 0; $row_page['nofollow'] = 0; $row_page = applyFormulasFilter($row_page); $breadcrumbs_active = $row_page['h1']; } // from filter page $result = mysqli_query($db, "SELECT pages_lang.title, pages_lang.h1, pages_lang.description, pages_lang.text, pages_lang.meta_title, pages_lang.meta_description, pages_lang.meta_keywords, pages_lang.meta_author, pages.image, pages.preview, pages.noindex, pages.nofollow FROM pages_lang LEFT JOIN pages ON pages_lang.id_page = pages.id WHERE pages_lang.url = 'filter=".mysqli_real_escape_string($db, $GET['filter'])."' AND pages_lang.lang = '$LANG'".($PAGE_VISIBLE ? ' AND pages.visible = 1' : '')." LIMIT 1"); if(mysqli_num_rows($result) != 0){ $row = mysqli_fetch_assoc($result); foreach($row as $key => $value) if($value !== '') $row_page[$key] = $value; $breadcrumbs_active = $row_page['h1']; } } else $row_page = applyFormulasPage($row_page); // meta title if($row_page['meta_title'] != '') echo '